home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: Mailbox/MIME Entity
(archive/mbox).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Mailbox/MIME Entity (archive/mbox)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| C source text
| default
| |
99%
| file
| C source, ASCII text
| default
| |
100%
| TrID
| E-Mail message (Var. 8)
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/950 MIME Email (1.0)
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4d 65 73 73 61 67 65 2d | 49 44 3a 20 3c 33 31 33 |Message-|ID: <313|
|00000010| 38 32 34 41 39 2e 36 35 | 36 45 40 75 6e 69 63 61 |824A9.65|6E@unica|
|00000020| 6c 6c 2e 62 65 3e 0a 44 | 61 74 65 3a 20 53 61 74 |ll.be>.D|ate: Sat|
|00000030| 2c 20 30 32 20 4d 61 72 | 20 31 39 39 36 20 31 31 |, 02 Mar| 1996 11|
|00000040| 3a 33 36 3a 32 35 20 2b | 30 31 30 30 0a 46 72 6f |:36:25 +|0100.Fro|
|00000050| 6d 3a 20 4a 6f 20 64 65 | 73 6d 65 74 20 3c 6a 64 |m: Jo de|smet <jd|
|00000060| 65 73 6d 65 74 40 75 6e | 69 63 61 6c 6c 2e 62 65 |esmet@un|icall.be|
|00000070| 3e 0a 58 2d 4d 61 69 6c | 65 72 3a 20 4d 6f 7a 69 |>.X-Mail|er: Mozi|
|00000080| 6c 6c 61 20 32 2e 30 47 | 6f 6c 64 42 31 20 28 57 |lla 2.0G|oldB1 (W|
|00000090| 69 6e 39 35 3b 20 49 29 | 0a 4d 49 4d 45 2d 56 65 |in95; I)|.MIME-Ve|
|000000a0| 72 73 69 6f 6e 3a 20 31 | 2e 30 0a 4e 65 77 73 67 |rsion: 1|.0.Newsg|
|000000b0| 72 6f 75 70 73 3a 20 63 | 6f 6d 70 2e 6c 61 6e 67 |roups: c|omp.lang|
|000000c0| 2e 63 2b 2b 0a 54 6f 3a | 20 43 41 52 4c 4f 20 4d |.c++.To:| CARLO M|
|000000d0| 41 52 49 4e 45 4c 4c 49 | 20 3c 63 61 72 6c 6f 73 |ARINELLI| <carlos|
|000000e0| 40 73 62 6f 78 2e 74 75 | 2d 67 72 61 7a 2e 61 63 |@sbox.tu|-graz.ac|
|000000f0| 2e 61 74 3e 0a 53 75 62 | 6a 65 63 74 3a 20 52 65 |.at>.Sub|ject: Re|
|00000100| 3a 20 43 2b 2b 20 61 6c | 67 6f 72 69 74 68 6d 20 |: C++ al|gorithm |
|00000110| 66 6f 72 20 74 68 65 20 | 46 46 54 0a 52 65 66 65 |for the |FFT.Refe|
|00000120| 72 65 6e 63 65 73 3a 20 | 3c 34 67 76 6f 31 67 24 |rences: |<4gvo1g$|
|00000130| 39 74 6a 40 66 73 74 67 | 61 6c 30 30 2e 74 75 2d |9tj@fstg|al00.tu-|
|00000140| 67 72 61 7a 2e 61 63 2e | 61 74 3e 0a 43 6f 6e 74 |graz.ac.|at>.Cont|
|00000150| 65 6e 74 2d 54 79 70 65 | 3a 20 6d 75 6c 74 69 70 |ent-Type|: multip|
|00000160| 61 72 74 2f 6d 69 78 65 | 64 3b 20 62 6f 75 6e 64 |art/mixe|d; bound|
|00000170| 61 72 79 3d 22 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ary="---|--------|
|00000180| 2d 35 39 33 46 32 42 41 | 34 39 38 45 22 0a 4e 4e |-593F2BA|498E".NN|
|00000190| 54 50 2d 50 6f 73 74 69 | 6e 67 2d 48 6f 73 74 3a |TP-Posti|ng-Host:|
|000001a0| 20 31 39 34 2e 31 39 37 | 2e 31 38 38 2e 35 33 0a | 194.197|.188.53.|
|000001b0| 50 61 74 68 3a 20 6e 65 | 77 73 2d 66 65 65 64 2e |Path: ne|ws-feed.|
|000001c0| 74 66 69 2e 62 65 21 0a | 0a 54 68 69 73 20 69 73 |tfi.be!.|.This is|
|000001d0| 20 61 20 6d 75 6c 74 69 | 2d 70 61 72 74 20 6d 65 | a multi|-part me|
|000001e0| 73 73 61 67 65 20 69 6e | 20 4d 49 4d 45 20 66 6f |ssage in| MIME fo|
|000001f0| 72 6d 61 74 2e 0a 0a 2d | 2d 2d 2d 2d 2d 2d 2d 2d |rmat...-|--------|
|00000200| 2d 2d 2d 2d 2d 35 39 33 | 46 32 42 41 34 39 38 45 |-----593|F2BA498E|
|00000210| 0a 43 6f 6e 74 65 6e 74 | 2d 54 79 70 65 3a 20 74 |.Content|-Type: t|
|00000220| 65 78 74 2f 70 6c 61 69 | 6e 3b 20 63 68 61 72 73 |ext/plai|n; chars|
|00000230| 65 74 3d 75 73 2d 61 73 | 63 69 69 0a 43 6f 6e 74 |et=us-as|cii.Cont|
|00000240| 65 6e 74 2d 54 72 61 6e | 73 66 65 72 2d 45 6e 63 |ent-Tran|sfer-Enc|
|00000250| 6f 64 69 6e 67 3a 20 37 | 62 69 74 0a 0a 43 41 52 |oding: 7|bit..CAR|
|00000260| 4c 4f 20 4d 41 52 49 4e | 45 4c 4c 49 20 77 72 6f |LO MARIN|ELLI wro|
|00000270| 74 65 3a 0a 3e 20 0a 3e | 20 49 27 6d 20 6c 6f 6f |te:.> .>| I'm loo|
|00000280| 6b 69 6e 67 20 66 6f 72 | 20 61 20 43 2b 2b 20 69 |king for| a C++ i|
|00000290| 6d 70 6c 65 6d 65 6e 74 | 61 74 69 6f 6e 20 6f 66 |mplement|ation of|
|000002a0| 20 74 68 65 20 72 61 64 | 69 78 2d 34 20 46 46 54 | the rad|ix-4 FFT|
|000002b0| 20 61 6c 67 6f 72 69 74 | 68 6d 2e 20 43 61 6e 0a | algorit|hm. Can.|
|000002c0| 3e 20 61 6e 79 62 6f 64 | 79 20 68 65 6c 70 20 6d |> anybod|y help m|
|000002d0| 65 3f 0a 0a 68 65 6c 6c | 6f 20 43 61 72 6c 6f 2c |e?..hell|o Carlo,|
|000002e0| 0a 77 65 6c 6c 2c 20 69 | 20 68 61 76 65 20 61 74 |.well, i| have at|
|000002f0| 74 61 63 68 65 64 20 61 | 20 75 75 65 6e 63 6f 64 |tached a| uuencod|
|00000300| 65 64 20 66 69 6c 65 20 | 63 6f 6e 74 61 69 6e 69 |ed file |containi|
|00000310| 6e 67 20 70 6c 61 69 6e | 20 43 20 63 6f 64 65 20 |ng plain| C code |
|00000320| 74 6f 20 6d 61 6b 65 20 | 61 20 72 61 64 69 78 0a |to make |a radix.|
|00000330| 34 20 46 46 54 20 28 69 | 74 20 63 6f 75 6c 64 20 |4 FFT (i|t could |
|00000340| 61 6c 73 6f 20 62 65 20 | 61 20 72 61 64 69 78 20 |also be |a radix |
|00000350| 38 2c 20 69 20 61 6d 20 | 6e 6f 74 20 73 75 72 65 |8, i am |not sure|
|00000360| 20 61 6e 79 6d 6f 72 65 | 20 62 65 63 61 75 73 65 | anymore| because|
|00000370| 20 69 74 73 20 61 20 77 | 68 69 6c 65 0a 61 67 6f | its a w|hile.ago|
|00000380| 20 74 68 61 74 20 69 20 | 68 61 76 65 20 63 6f 64 | that i |have cod|
|00000390| 65 64 20 69 74 29 2e 20 | 49 74 20 69 73 20 74 72 |ed it). |It is tr|
|000003a0| 61 6e 73 6c 61 74 65 64 | 20 66 72 6f 6d 20 6d 61 |anslated| from ma|
|000003b0| 63 68 69 6e 65 20 63 6f | 64 65 20 66 6f 72 20 74 |chine co|de for t|
|000003c0| 68 65 20 41 44 53 50 32 | 31 30 31 2c 0a 61 6e 64 |he ADSP2|101,.and|
|000003d0| 20 69 20 68 61 76 65 20 | 6f 70 74 69 6d 69 7a 65 | i have |optimize|
|000003e0| 64 20 69 74 20 66 6f 72 | 20 74 68 65 20 75 73 65 |d it for| the use|
|000003f0| 20 69 6e 20 43 2e 20 49 | 74 20 69 73 20 70 6f 73 | in C. I|t is pos|
|00000400| 73 69 62 6c 65 20 74 6f | 20 62 75 69 6c 64 20 61 |sible to| build a|
|00000410| 20 43 2b 2b 20 77 72 61 | 70 70 65 72 0a 61 72 6f | C++ wra|pper.aro|
|00000420| 75 6e 64 20 69 74 2c 20 | 62 75 74 20 74 68 65 20 |und it, |but the |
|00000430| 6d 61 69 6e 20 63 6f 64 | 65 20 6d 75 73 74 20 73 |main cod|e must s|
|00000440| 74 61 79 20 70 6c 61 69 | 6e 20 43 20 28 73 70 65 |tay plai|n C (spe|
|00000450| 65 64 29 2e 20 49 20 77 | 69 6c 6c 20 6e 6f 74 20 |ed). I w|ill not |
|00000460| 65 78 70 6c 61 69 6e 20 | 74 68 65 0a 66 75 6e 63 |explain |the.func|
|00000470| 74 69 6f 6e 73 2c 20 49 | 20 77 69 6c 6c 20 6f 6e |tions, I| will on|
|00000480| 6c 79 20 73 61 79 20 74 | 68 61 74 20 74 68 65 72 |ly say t|hat ther|
|00000490| 65 20 69 73 20 61 6c 73 | 6f 20 61 20 52 65 76 65 |e is als|o a Reve|
|000004a0| 72 73 65 20 46 46 54 2e | 0a 52 65 6d 65 6d 62 65 |rse FFT.|.Remembe|
|000004b0| 72 3a 20 72 61 64 69 78 | 20 34 20 69 73 20 6e 6f |r: radix| 4 is no|
|000004c0| 74 20 74 68 65 20 66 61 | 73 74 65 73 74 21 21 20 |t the fa|stest!! |
|000004d0| 49 66 20 79 6f 75 20 61 | 72 65 20 6f 6e 6c 79 20 |If you a|re only |
|000004e0| 69 6e 74 65 72 65 73 74 | 65 64 20 69 6e 20 72 65 |interest|ed in re|
|000004f0| 61 6c 20 6e 75 6d 62 65 | 72 73 2c 0a 74 68 65 72 |al numbe|rs,.ther|
|00000500| 65 20 65 78 69 73 74 20 | 66 61 73 74 65 72 20 72 |e exist |faster r|
|00000510| 6f 75 74 69 6e 65 73 20 | 66 6f 72 20 69 74 21 21 |outines |for it!!|
|00000520| 20 41 6e 64 20 49 20 61 | 6d 20 73 75 72 65 20 74 | And I a|m sure t|
|00000530| 68 61 74 20 65 76 65 6e | 20 6d 79 20 72 6f 75 74 |hat even| my rout|
|00000540| 69 6e 65 20 63 61 6e 20 | 62 65 0a 6d 6f 72 65 20 |ine can |be.more |
|00000550| 6f 70 74 69 6d 69 7a 65 | 64 2c 20 74 68 65 72 65 |optimize|d, there|
|00000560| 20 61 72 65 20 73 6f 6d | 65 20 70 6c 61 63 65 73 | are som|e places|
|00000570| 20 69 6e 20 6d 79 20 63 | 6f 64 65 20 74 68 61 74 | in my c|ode that|
|00000580| 20 69 20 63 6f 70 70 79 | 20 61 6e 20 61 72 72 61 | i coppy| an arra|
|00000590| 79 3a 20 74 72 79 20 74 | 6f 0a 65 6c 6c 69 6d 69 |y: try t|o.ellimi|
|000005a0| 6e 61 74 65 20 74 68 69 | 73 2e 0a 49 20 75 73 65 |nate thi|s..I use|
|000005b0| 20 74 68 69 73 20 63 6f | 64 65 20 74 68 6f 20 70 | this co|de tho p|
|000005c0| 72 6f 76 65 20 74 68 61 | 74 20 69 74 20 69 73 20 |rove tha|t it is |
|000005d0| 70 6f 73 73 69 62 6c 65 | 20 74 6f 20 75 73 65 20 |possible| to use |
|000005e0| 31 44 20 61 6c 67 6f 72 | 69 74 6d 73 20 6f 6e 20 |1D algor|itms on |
|000005f0| 32 44 20 49 6d 61 67 65 | 73 0a 74 6f 20 64 6f 20 |2D Image|s.to do |
|00000600| 69 6d 61 67 65 20 72 65 | 63 6f 67 6e 69 73 69 6f |image re|cognisio|
|00000610| 6e 2e 0a 0a 3e 20 54 68 | 61 6e 6b 73 20 61 20 6c |n...> Th|anks a l|
|00000620| 6f 74 21 0a 3e 20 79 6f | 75 20 61 72 65 20 77 65 |ot!.> yo|u are we|
|00000630| 6c 63 6f 6d 65 21 0a 0a | 68 61 70 70 79 20 70 72 |lcome!..|happy pr|
|00000640| 6f 67 72 61 6d 6d 69 6e | 67 2c 0a 4a 6f 20 44 65 |ogrammin|g,.Jo De|
|00000650| 73 6d 65 74 0a 0a 6a 64 | 65 73 6d 65 74 40 75 6e |smet..jd|esmet@un|
|00000660| 69 63 61 6c 6c 2e 62 65 | 0a 68 74 74 70 3a 2f 2f |icall.be|.http://|
|00000670| 75 63 32 2e 75 6e 69 63 | 61 6c 6c 2e 62 65 2f 6a |uc2.unic|all.be/j|
|00000680| 64 65 73 6d 65 74 0a 0a | 2d 2d 2d 2d 2d 2d 2d 2d |desmet..|--------|
|00000690| 2d 2d 2d 2d 2d 2d 35 39 | 33 46 32 42 41 34 39 38 |------59|3F2BA498|
|000006a0| 45 0a 43 6f 6e 74 65 6e | 74 2d 54 79 70 65 3a 20 |E.Conten|t-Type: |
|000006b0| 74 65 78 74 2f 70 6c 61 | 69 6e 3b 20 63 68 61 72 |text/pla|in; char|
|000006c0| 73 65 74 3d 75 73 2d 61 | 73 63 69 69 0a 43 6f 6e |set=us-a|scii.Con|
|000006d0| 74 65 6e 74 2d 54 72 61 | 6e 73 66 65 72 2d 45 6e |tent-Tra|nsfer-En|
|000006e0| 63 6f 64 69 6e 67 3a 20 | 37 62 69 74 0a 43 6f 6e |coding: |7bit.Con|
|000006f0| 74 65 6e 74 2d 44 69 73 | 70 6f 73 69 74 69 6f 6e |tent-Dis|position|
|00000700| 3a 20 69 6e 6c 69 6e 65 | 3b 20 66 69 6c 65 6e 61 |: inline|; filena|
|00000710| 6d 65 3d 22 46 6f 75 72 | 69 65 72 2e 75 75 65 22 |me="Four|ier.uue"|
|00000720| 0a 0a 23 69 6e 63 6c 75 | 64 65 20 3c 6d 61 74 68 |..#inclu|de <math|
|00000730| 2e 68 3e 0a 23 69 6e 63 | 6c 75 64 65 20 3c 76 61 |.h>.#inc|lude <va|
|00000740| 6c 75 65 73 2e 68 3e 0a | 0a 76 6f 69 64 20 49 6e |lues.h>.|.void In|
|00000750| 69 74 46 46 54 28 69 6e | 74 20 6e 29 3b 0a 76 6f |itFFT(in|t n);.vo|
|00000760| 69 64 20 46 46 54 28 64 | 6f 75 62 6c 65 20 66 61 |id FFT(d|ouble fa|
|00000770| 72 20 2a 49 6e 70 75 74 | 2c 64 6f 75 62 6c 65 20 |r *Input|,double |
|00000780| 66 61 72 20 2a 4f 75 74 | 70 75 74 52 65 2c 64 6f |far *Out|putRe,do|
|00000790| 75 62 6c 65 20 66 61 72 | 20 2a 4f 75 74 70 75 74 |uble far| *Output|
|000007a0| 49 6d 29 3b 0a 76 6f 69 | 64 20 43 6c 65 61 6e 55 |Im);.voi|d CleanU|
|000007b0| 70 46 46 54 28 76 6f 69 | 64 29 3b 0a 76 6f 69 64 |pFFT(voi|d);.void|
|000007c0| 20 49 46 46 54 28 64 6f | 75 62 6c 65 20 66 61 72 | IFFT(do|uble far|
|000007d0| 20 2a 49 6e 70 75 74 52 | 65 2c 64 6f 75 62 6c 65 | *InputR|e,double|
|000007e0| 20 66 61 72 20 2a 49 6e | 70 75 74 49 6d 2c 64 6f | far *In|putIm,do|
|000007f0| 75 62 6c 65 20 66 61 72 | 20 2a 4f 75 74 70 75 74 |uble far| *Output|
|00000800| 29 3b 0a 0a 0a 73 74 61 | 74 69 63 20 64 6f 75 62 |);...sta|tic doub|
|00000810| 6c 65 20 2a 52 65 70 6c | 61 63 65 58 44 61 74 61 |le *Repl|aceXData|
|00000820| 3b 0a 73 74 61 74 69 63 | 20 64 6f 75 62 6c 65 20 |;.static| double |
|00000830| 2a 52 65 70 6c 61 63 65 | 59 44 61 74 61 3b 0a 73 |*Replace|YData;.s|
|00000840| 74 61 74 69 63 20 64 6f | 75 62 6c 65 20 2a 53 69 |tatic do|uble *Si|
|00000850| 6e 54 77 69 64 73 3b 0a | 73 74 61 74 69 63 20 69 |nTwids;.|static i|
|00000860| 6e 74 20 2a 55 6e 73 63 | 72 61 6d 62 6c 65 64 49 |nt *Unsc|rambledI|
|00000870| 6e 64 65 78 3b 0a 73 74 | 61 74 69 63 20 69 6e 74 |ndex;.st|atic int|
|00000880| 20 4e 2c 4e 5f 44 49 56 | 5f 34 2c 4c 4f 47 32 4e | N,N_DIV|_4,LOG2N|
|00000890| 64 69 76 32 3b 0a 0a 76 | 6f 69 64 20 49 6e 69 74 |div2;..v|oid Init|
|000008a0| 46 46 54 28 69 6e 74 20 | 6e 29 0a 7b 0a 20 20 69 |FFT(int |n).{. i|
|000008b0| 6e 74 20 69 2c 6a 3b 0a | 20 20 4e 3d 6e 3b 0a 20 |nt i,j;.| N=n;. |
|000008c0| 20 4e 5f 44 49 56 5f 34 | 3d 4e 2f 34 3b 0a 20 20 | N_DIV_4|=N/4;. |
|000008d0| 4c 4f 47 32 4e 64 69 76 | 32 3d 28 69 6e 74 28 6c |LOG2Ndiv|2=(int(l|
|000008e0| 6f 67 28 4e 29 2f 6c 6f | 67 28 32 29 29 2b 31 29 |og(N)/lo|g(2))+1)|
|000008f0| 3e 3e 31 3b 20 2f 2f 4a | 75 69 73 74 20 61 66 72 |>>1; //J|uist afr|
|00000900| 6f 6e 64 65 6e 20 65 6e | 20 73 6e 65 6c 0a 0a 20 |onden en| snel.. |
|00000910| 20 52 65 70 6c 61 63 65 | 58 44 61 74 61 3d 6e 65 | Replace|XData=ne|
|00000920| 77 20 64 6f 75 62 6c 65 | 5b 4e 5d 3b 0a 20 20 52 |w double|[N];. R|
|00000930| 65 70 6c 61 63 65 59 44 | 61 74 61 3d 6e 65 77 20 |eplaceYD|ata=new |
|00000940| 64 6f 75 62 6c 65 5b 4e | 5d 3b 0a 20 20 53 69 6e |double[N|];. Sin|
|00000950| 54 77 69 64 73 3d 6e 65 | 77 20 64 6f 75 62 6c 65 |Twids=ne|w double|
|00000960| 5b 4e 2b 4e 2f 34 5d 3b | 0a 20 20 55 6e 73 63 72 |[N+N/4];|. Unscr|
|00000970| 61 6d 62 6c 65 64 49 6e | 64 65 78 3d 6e 65 77 20 |ambledIn|dex=new |
|00000980| 69 6e 74 5b 4e 5d 3b 0a | 0a 20 20 66 6f 72 20 28 |int[N];.|. for (|
|00000990| 69 3d 30 3b 69 3c 4e 2b | 4e 5f 44 49 56 5f 34 3b |i=0;i<N+|N_DIV_4;|
|000009a0| 69 2b 2b 29 20 53 69 6e | 54 77 69 64 73 5b 69 5d |i++) Sin|Twids[i]|
|000009b0| 3d 73 69 6e 28 69 2a 28 | 32 2a 4d 5f 50 49 2f 4e |=sin(i*(|2*M_PI/N|
|000009c0| 29 29 3b 0a 20 20 66 6f | 72 20 28 69 3d 30 3b 69 |));. fo|r (i=0;i|
|000009d0| 3c 4e 3b 69 2b 2b 29 0a | 20 20 7b 0a 20 20 20 20 |<N;i++).| {. |
|000009e0| 55 6e 73 63 72 61 6d 62 | 6c 65 64 49 6e 64 65 78 |Unscramb|ledIndex|
|000009f0| 5b 69 5d 3d 30 3b 0a 20 | 20 20 20 66 6f 72 20 28 |[i]=0;. | for (|
|00000a00| 6a 3d 30 3b 6a 3c 4c 4f | 47 32 4e 64 69 76 32 3b |j=0;j<LO|G2Ndiv2;|
|00000a10| 6a 2b 2b 29 0a 20 20 20 | 20 20 20 55 6e 73 63 72 |j++). | Unscr|
|00000a20| 61 6d 62 6c 65 64 49 6e | 64 65 78 5b 69 5d 7c 3d |ambledIn|dex[i]|=|
|00000a30| 28 28 69 3e 3e 28 28 4c | 4f 47 32 4e 64 69 76 32 |((i>>((L|OG2Ndiv2|
|00000a40| 2d 31 2d 6a 29 3c 3c 31 | 29 29 26 30 78 33 29 3c |-1-j)<<1|))&0x3)<|
|00000a50| 3c 28 6a 3c 3c 31 29 3b | 0a 20 20 7d 0a 0a 7d 0a |<(j<<1);|. }..}.|
|00000a60| 0a 76 6f 69 64 20 43 6c | 65 61 6e 55 70 46 46 54 |.void Cl|eanUpFFT|
|00000a70| 28 76 6f 69 64 29 0a 7b | 0a 20 20 64 65 6c 65 74 |(void).{|. delet|
|00000a80| 65 20 5b 5d 20 52 65 70 | 6c 61 63 65 58 44 61 74 |e [] Rep|laceXDat|
|00000a90| 61 3b 0a 20 20 64 65 6c | 65 74 65 20 5b 5d 20 52 |a;. del|ete [] R|
|00000aa0| 65 70 6c 61 63 65 59 44 | 61 74 61 3b 0a 20 20 64 |eplaceYD|ata;. d|
|00000ab0| 65 6c 65 74 65 20 5b 5d | 20 53 69 6e 54 77 69 64 |elete []| SinTwid|
|00000ac0| 73 3b 0a 20 20 64 65 6c | 65 74 65 20 5b 5d 20 55 |s;. del|ete [] U|
|00000ad0| 6e 73 63 72 61 6d 62 6c | 65 64 49 6e 64 65 78 3b |nscrambl|edIndex;|
|00000ae0| 0a 7d 0a 0a 76 6f 69 64 | 20 46 46 54 28 64 6f 75 |.}..void| FFT(dou|
|00000af0| 62 6c 65 20 66 61 72 20 | 2a 49 6e 70 75 74 2c 64 |ble far |*Input,d|
|00000b00| 6f 75 62 6c 65 20 66 61 | 72 20 2a 4f 75 74 70 75 |ouble fa|r *Outpu|
|00000b10| 74 52 65 2c 64 6f 75 62 | 6c 65 20 66 61 72 20 2a |tRe,doub|le far *|
|00000b20| 4f 75 74 70 75 74 49 6d | 29 0a 7b 0a 20 20 69 6e |OutputIm|).{. in|
|00000b30| 74 20 42 46 6c 79 73 3d | 4e 5f 44 49 56 5f 34 2c |t BFlys=|N_DIV_4,|
|00000b40| 42 46 6c 79 73 42 79 33 | 3d 28 4e 2a 33 29 2f 34 |BFlysBy3|=(N*3)/4|
|00000b50| 3b 0a 20 20 69 6e 74 20 | 47 72 6f 75 70 73 3d 31 |;. int |Groups=1|
|00000b60| 2c 47 72 6f 75 70 73 42 | 79 32 3d 32 2c 47 72 6f |,GroupsB|y2=2,Gro|
|00000b70| 75 70 73 42 79 33 3d 33 | 3b 0a 20 20 69 6e 74 20 |upsBy3=3|;. int |
|00000b80| 53 74 61 67 65 2c 47 72 | 6f 75 70 2c 42 46 6c 79 |Stage,Gr|oup,BFly|
|00000b90| 3b 0a 20 20 69 6e 74 20 | 69 3b 0a 0a 20 20 64 6f |;. int |i;.. do|
|00000ba0| 75 62 6c 65 20 2a 58 41 | 2c 2a 58 42 2c 2a 58 43 |uble *XA|,*XB,*XC|
|00000bb0| 2c 2a 58 44 3b 0a 20 20 | 64 6f 75 62 6c 65 20 2a |,*XD;. |double *|
|00000bc0| 59 41 2c 2a 59 42 2c 2a | 59 43 2c 2a 59 44 3b 0a |YA,*YB,*|YC,*YD;.|
|00000bd0| 20 20 64 6f 75 62 6c 65 | 20 78 61 2c 78 62 2c 78 | double| xa,xb,x|
|00000be0| 63 2c 78 64 3b 0a 20 20 | 64 6f 75 62 6c 65 20 79 |c,xd;. |double y|
|00000bf0| 61 2c 79 62 2c 79 63 2c | 79 64 3b 0a 20 20 64 6f |a,yb,yc,|yd;. do|
|00000c00| 75 62 6c 65 20 2a 43 62 | 2c 2a 43 63 2c 2a 43 64 |uble *Cb|,*Cc,*Cd|
|00000c10| 3b 0a 20 20 64 6f 75 62 | 6c 65 20 2a 53 62 2c 2a |;. doub|le *Sb,*|
|00000c20| 53 63 2c 2a 53 64 3b 0a | 0a 20 20 66 6f 72 20 28 |Sc,*Sd;.|. for (|
|00000c30| 69 3d 30 3b 69 3c 4e 3b | 69 2b 2b 29 20 52 65 70 |i=0;i<N;|i++) Rep|
|00000c40| 6c 61 63 65 58 44 61 74 | 61 5b 69 5d 3d 49 6e 70 |laceXDat|a[i]=Inp|
|00000c50| 75 74 5b 69 5d 3b 0a 20 | 20 66 6f 72 20 28 69 3d |ut[i];. | for (i=|
|00000c60| 30 3b 69 3c 4e 3b 69 2b | 2b 29 20 52 65 70 6c 61 |0;i<N;i+|+) Repla|
|00000c70| 63 65 59 44 61 74 61 5b | 69 5d 3d 30 3b 0a 0a 20 |ceYData[|i]=0;.. |
|00000c80| 20 66 6f 72 20 28 53 74 | 61 67 65 3d 4c 4f 47 32 | for (St|age=LOG2|
|00000c90| 4e 64 69 76 32 3b 53 74 | 61 67 65 3b 53 74 61 67 |Ndiv2;St|age;Stag|
|00000ca0| 65 2d 2d 29 0a 20 20 7b | 0a 20 20 20 20 58 41 3d |e--). {|. XA=|
|00000cb0| 52 65 70 6c 61 63 65 58 | 44 61 74 61 3b 0a 20 20 |ReplaceX|Data;. |
|00000cc0| 20 20 58 42 3d 58 41 2b | 42 46 6c 79 73 3b 0a 20 | XB=XA+|BFlys;. |
|00000cd0| 20 20 20 58 43 3d 58 42 | 2b 42 46 6c 79 73 3b 0a | XC=XB|+BFlys;.|
|00000ce0| 20 20 20 20 58 44 3d 58 | 43 2b 42 46 6c 79 73 3b | XD=X|C+BFlys;|
|00000cf0| 0a 20 20 20 20 59 41 3d | 52 65 70 6c 61 63 65 59 |. YA=|ReplaceY|
|00000d00| 44 61 74 61 3b 0a 20 20 | 20 20 59 42 3d 59 41 2b |Data;. | YB=YA+|
|00000d10| 42 46 6c 79 73 3b 0a 20 | 20 20 20 59 43 3d 59 42 |BFlys;. | YC=YB|
|00000d20| 2b 42 46 6c 79 73 3b 0a | 20 20 20 20 59 44 3d 59 |+BFlys;.| YD=Y|
|00000d30| 43 2b 42 46 6c 79 73 3b | 0a 20 20 20 20 66 6f 72 |C+BFlys;|. for|
|00000d40| 28 47 72 6f 75 70 3d 47 | 72 6f 75 70 73 3b 47 72 |(Group=G|roups;Gr|
|00000d50| 6f 75 70 3b 47 72 6f 75 | 70 2d 2d 29 0a 20 20 20 |oup;Grou|p--). |
|00000d60| 20 7b 0a 20 20 20 20 20 | 20 43 62 3d 43 63 3d 43 | {. | Cb=Cc=C|
|00000d70| 64 3d 53 69 6e 54 77 69 | 64 73 2b 4e 5f 44 49 56 |d=SinTwi|ds+N_DIV|
|00000d80| 5f 34 3b 0a 20 20 20 20 | 20 20 53 62 3d 53 63 3d |_4;. | Sb=Sc=|
|00000d90| 53 64 3d 53 69 6e 54 77 | 69 64 73 3b 0a 20 20 20 |Sd=SinTw|ids;. |
|00000da0| 20 20 20 66 6f 72 28 42 | 46 6c 79 3d 42 46 6c 79 | for(B|Fly=BFly|
|00000db0| 73 3b 42 46 6c 79 3b 42 | 46 6c 79 2d 2d 29 0a 20 |s;BFly;B|Fly--). |
|00000dc0| 20 20 20 20 20 7b 0a 20 | 20 20 20 20 20 20 20 78 | {. | x|
|00000dd0| 61 3d 2a 58 41 3b 20 78 | 62 3d 2a 58 42 3b 20 78 |a=*XA; x|b=*XB; x|
|00000de0| 63 3d 2a 58 43 3b 20 78 | 64 3d 2a 58 44 3b 0a 20 |c=*XC; x|d=*XD;. |
|00000df0| 20 20 20 20 20 20 20 79 | 61 3d 2a 59 41 3b 20 79 | y|a=*YA; y|
|00000e00| 62 3d 2a 59 42 3b 20 79 | 63 3d 2a 59 43 3b 20 79 |b=*YB; y|c=*YC; y|
|00000e10| 64 3d 2a 59 44 3b 0a 0a | 20 20 20 20 20 20 20 20 |d=*YD;..| |
|00000e20| 2a 58 41 2b 2b 3d 78 61 | 2b 78 62 2b 78 63 2b 78 |*XA++=xa|+xb+xc+x|
|00000e30| 64 3b 0a 20 20 20 20 20 | 20 20 20 2a 59 41 2b 2b |d;. | *YA++|
|00000e40| 3d 79 61 2b 79 62 2b 79 | 63 2b 79 64 3b 0a 20 20 |=ya+yb+y|c+yd;. |
|00000e50| 20 20 20 20 20 20 2a 58 | 42 2b 2b 3d 28 78 61 2b | *X|B++=(xa+|
|00000e60| 79 62 2d 78 63 2d 79 64 | 29 2a 28 2a 43 62 29 2b |yb-xc-yd|)*(*Cb)+|
|00000e70| 28 79 61 2d 78 62 2d 79 | 63 2b 78 64 29 2a 28 2a |(ya-xb-y|c+xd)*(*|
|00000e80| 53 62 29 3b 0a 20 20 20 | 20 20 20 20 20 2a 59 42 |Sb);. | *YB|
|00000e90| 2b 2b 3d 28 79 61 2d 78 | 62 2d 79 63 2b 78 64 29 |++=(ya-x|b-yc+xd)|
|00000ea0| 2a 28 2a 43 62 29 2d 28 | 78 61 2b 79 62 2d 78 63 |*(*Cb)-(|xa+yb-xc|
|00000eb0| 2d 79 64 29 2a 28 2a 53 | 62 29 3b 0a 20 20 20 20 |-yd)*(*S|b);. |
|00000ec0| 20 20 20 20 2a 58 43 2b | 2b 3d 28 78 61 2d 78 62 | *XC+|+=(xa-xb|
|00000ed0| 2b 78 63 2d 78 64 29 2a | 28 2a 43 63 29 2b 28 79 |+xc-xd)*|(*Cc)+(y|
|00000ee0| 61 2d 79 62 2b 79 63 2d | 79 64 29 2a 28 2a 53 63 |a-yb+yc-|yd)*(*Sc|
|00000ef0| 29 3b 0a 20 20 20 20 20 | 20 20 20 2a 59 43 2b 2b |);. | *YC++|
|00000f00| 3d 28 79 61 2d 79 62 2b | 79 63 2d 79 64 29 2a 28 |=(ya-yb+|yc-yd)*(|
|00000f10| 2a 43 63 29 2d 28 78 61 | 2d 78 62 2b 78 63 2d 78 |*Cc)-(xa|-xb+xc-x|
|00000f20| 64 29 2a 28 2a 53 63 29 | 3b 0a 20 20 20 20 20 20 |d)*(*Sc)|;. |
|00000f30| 20 20 2a 58 44 2b 2b 3d | 28 78 61 2d 79 62 2d 78 | *XD++=|(xa-yb-x|
|00000f40| 63 2b 79 64 29 2a 28 2a | 43 64 29 2b 28 79 61 2b |c+yd)*(*|Cd)+(ya+|
|00000f50| 78 62 2d 79 63 2d 78 64 | 29 2a 28 2a 53 64 29 3b |xb-yc-xd|)*(*Sd);|
|00000f60| 0a 20 20 20 20 20 20 20 | 20 2a 59 44 2b 2b 3d 28 |. | *YD++=(|
|00000f70| 79 61 2b 78 62 2d 79 63 | 2d 78 64 29 2a 28 2a 43 |ya+xb-yc|-xd)*(*C|
|00000f80| 64 29 2d 28 78 61 2d 79 | 62 2d 78 63 2b 79 64 29 |d)-(xa-y|b-xc+yd)|
|00000f90| 2a 28 2a 53 64 29 3b 0a | 0a 20 20 20 20 20 20 20 |*(*Sd);.|. |
|00000fa0| 20 43 62 2b 3d 47 72 6f | 75 70 73 3b 0a 20 20 20 | Cb+=Gro|ups;. |
|00000fb0| 20 20 20 20 20 43 63 2b | 3d 47 72 6f 75 70 73 42 | Cc+|=GroupsB|
|00000fc0| 79 32 3b 0a 20 20 20 20 | 20 20 20 20 43 64 2b 3d |y2;. | Cd+=|
|00000fd0| 47 72 6f 75 70 73 42 79 | 33 3b 0a 0a 20 20 20 20 |GroupsBy|3;.. |
|00000fe0| 20 20 20 20 53 62 2b 3d | 47 72 6f 75 70 73 3b 0a | Sb+=|Groups;.|
|00000ff0| 20 20 20 20 20 20 20 20 | 53 63 2b 3d 47 72 6f 75 | |Sc+=Grou|
|00001000| 70 73 42 79 32 3b 0a 20 | 20 20 20 20 20 20 20 53 |psBy2;. | S|
|00001010| 64 2b 3d 47 72 6f 75 70 | 73 42 79 33 3b 0a 20 20 |d+=Group|sBy3;. |
|00001020| 20 20 20 20 7d 20 20 2f | 2a 20 42 75 74 74 65 72 | } /|* Butter|
|00001030| 46 6c 79 20 2a 2f 0a 0a | 20 20 20 20 20 20 58 41 |Fly */..| XA|
|00001040| 2b 3d 42 46 6c 79 73 42 | 79 33 3b 0a 20 20 20 20 |+=BFlysB|y3;. |
|00001050| 20 20 58 42 2b 3d 42 46 | 6c 79 73 42 79 33 3b 0a | XB+=BF|lysBy3;.|
|00001060| 20 20 20 20 20 20 58 43 | 2b 3d 42 46 6c 79 73 42 | XC|+=BFlysB|
|00001070| 79 33 3b 0a 20 20 20 20 | 20 20 58 44 2b 3d 42 46 |y3;. | XD+=BF|
|00001080| 6c 79 73 42 79 33 3b 0a | 0a 20 20 20 20 20 20 59 |lysBy3;.|. Y|
|00001090| 41 2b 3d 42 46 6c 79 73 | 42 79 33 3b 0a 20 20 20 |A+=BFlys|By3;. |
|000010a0| 20 20 20 59 42 2b 3d 42 | 46 6c 79 73 42 79 33 3b | YB+=B|FlysBy3;|
|000010b0| 0a 20 20 20 20 20 20 59 | 43 2b 3d 42 46 6c 79 73 |. Y|C+=BFlys|
|000010c0| 42 79 33 3b 0a 20 20 20 | 20 20 20 59 44 2b 3d 42 |By3;. | YD+=B|
|000010d0| 46 6c 79 73 42 79 33 3b | 0a 0a 20 20 20 20 7d 20 |FlysBy3;|.. } |
|000010e0| 20 2f 2a 20 47 72 6f 75 | 70 20 2a 2f 0a 0a 20 20 | /* Grou|p */.. |
|000010f0| 20 20 47 72 6f 75 70 73 | 3c 3c 3d 32 3b 0a 20 20 | Groups|<<=2;. |
|00001100| 20 20 47 72 6f 75 70 73 | 42 79 32 3c 3c 3d 32 3b | Groups|By2<<=2;|
|00001110| 0a 20 20 20 20 47 72 6f | 75 70 73 42 79 33 3c 3c |. Gro|upsBy3<<|
|00001120| 3d 32 3b 0a 20 20 20 20 | 42 46 6c 79 73 3e 3e 3d |=2;. |BFlys>>=|
|00001130| 32 3b 0a 20 20 20 20 42 | 46 6c 79 73 42 79 33 3e |2;. B|FlysBy3>|
|00001140| 3e 3d 32 3b 0a 20 20 7d | 20 20 2f 2a 20 53 74 61 |>=2;. }| /* Sta|
|00001150| 67 65 20 2a 2f 0a 0a 20 | 20 2f 2a 20 55 6e 73 63 |ge */.. | /* Unsc|
|00001160| 72 61 6d 62 6c 65 20 2a | 2f 0a 20 20 66 6f 72 20 |ramble *|/. for |
|00001170| 28 69 3d 30 3b 69 3c 4e | 3b 69 2b 2b 29 20 4f 75 |(i=0;i<N|;i++) Ou|
|00001180| 74 70 75 74 52 65 5b 69 | 5d 3d 52 65 70 6c 61 63 |tputRe[i|]=Replac|
|00001190| 65 58 44 61 74 61 5b 55 | 6e 73 63 72 61 6d 62 6c |eXData[U|nscrambl|
|000011a0| 65 64 49 6e 64 65 78 5b | 69 5d 5d 3b 0a 20 20 66 |edIndex[|i]];. f|
|000011b0| 6f 72 20 28 69 3d 30 3b | 69 3c 4e 3b 69 2b 2b 29 |or (i=0;|i<N;i++)|
|000011c0| 20 4f 75 74 70 75 74 49 | 6d 5b 69 5d 3d 52 65 70 | OutputI|m[i]=Rep|
|000011d0| 6c 61 63 65 59 44 61 74 | 61 5b 55 6e 73 63 72 61 |laceYDat|a[Unscra|
|000011e0| 6d 62 6c 65 64 49 6e 64 | 65 78 5b 69 5d 5d 3b 0a |mbledInd|ex[i]];.|
|000011f0| 7d 20 20 20 2f 2a 20 46 | 46 54 20 2a 2f 0a 0a 0a |} /* F|FT */...|
|00001200| 0a 76 6f 69 64 20 49 46 | 46 54 28 64 6f 75 62 6c |.void IF|FT(doubl|
|00001210| 65 20 66 61 72 20 2a 49 | 6e 70 75 74 52 65 2c 64 |e far *I|nputRe,d|
|00001220| 6f 75 62 6c 65 20 66 61 | 72 20 2a 49 6e 70 75 74 |ouble fa|r *Input|
|00001230| 49 6d 2c 64 6f 75 62 6c | 65 20 66 61 72 20 2a 4f |Im,doubl|e far *O|
|00001240| 75 74 70 75 74 29 0a 7b | 0a 20 20 69 6e 74 20 42 |utput).{|. int B|
|00001250| 46 6c 79 73 3d 4e 5f 44 | 49 56 5f 34 2c 42 46 6c |Flys=N_D|IV_4,BFl|
|00001260| 79 73 42 79 33 3d 28 4e | 2a 33 29 2f 34 3b 0a 20 |ysBy3=(N|*3)/4;. |
|00001270| 20 69 6e 74 20 47 72 6f | 75 70 73 3d 31 2c 47 72 | int Gro|ups=1,Gr|
|00001280| 6f 75 70 73 42 79 32 3d | 32 2c 47 72 6f 75 70 73 |oupsBy2=|2,Groups|
|00001290| 42 79 33 3d 33 3b 0a 20 | 20 69 6e 74 20 53 74 61 |By3=3;. | int Sta|
|000012a0| 67 65 2c 47 72 6f 75 70 | 2c 42 46 6c 79 3b 0a 20 |ge,Group|,BFly;. |
|000012b0| 20 69 6e 74 20 69 3b 0a | 0a 20 20 64 6f 75 62 6c | int i;.|. doubl|
|000012c0| 65 20 2a 58 41 2c 2a 58 | 42 2c 2a 58 43 2c 2a 58 |e *XA,*X|B,*XC,*X|
|000012d0| 44 3b 0a 20 20 64 6f 75 | 62 6c 65 20 2a 59 41 2c |D;. dou|ble *YA,|
|000012e0| 2a 59 42 2c 2a 59 43 2c | 2a 59 44 3b 0a 20 20 64 |*YB,*YC,|*YD;. d|
|000012f0| 6f 75 62 6c 65 20 78 61 | 2c 78 62 2c 78 63 2c 78 |ouble xa|,xb,xc,x|
|00001300| 64 3b 0a 20 20 64 6f 75 | 62 6c 65 20 79 61 2c 79 |d;. dou|ble ya,y|
|00001310| 62 2c 79 63 2c 79 64 3b | 0a 20 20 64 6f 75 62 6c |b,yc,yd;|. doubl|
|00001320| 65 20 2a 43 62 2c 2a 43 | 63 2c 2a 43 64 3b 0a 20 |e *Cb,*C|c,*Cd;. |
|00001330| 20 64 6f 75 62 6c 65 20 | 2a 53 62 2c 2a 53 63 2c | double |*Sb,*Sc,|
|00001340| 2a 53 64 3b 0a 0a 20 20 | 2f 2f 20 46 46 54 28 63 |*Sd;.. |// FFT(c|
|00001350| 6f 6d 70 6c 65 78 20 74 | 6f 65 67 65 76 6f 65 67 |omplex t|oegevoeg|
|00001360| 64 65 29 3d 4e 2a 49 46 | 46 54 0a 20 20 66 6f 72 |de)=N*IF|FT. for|
|00001370| 20 28 69 3d 30 3b 69 3c | 4e 3b 69 2b 2b 29 20 52 | (i=0;i<|N;i++) R|
|00001380| 65 70 6c 61 63 65 58 44 | 61 74 61 5b 69 5d 3d 49 |eplaceXD|ata[i]=I|
|00001390| 6e 70 75 74 52 65 5b 69 | 5d 3b 0a 20 20 66 6f 72 |nputRe[i|];. for|
|000013a0| 20 28 69 3d 30 3b 69 3c | 4e 3b 69 2b 2b 29 20 52 | (i=0;i<|N;i++) R|
|000013b0| 65 70 6c 61 63 65 59 44 | 61 74 61 5b 69 5d 3d 2d |eplaceYD|ata[i]=-|
|000013c0| 49 6e 70 75 74 49 6d 5b | 69 5d 3b 0a 0a 20 20 66 |InputIm[|i];.. f|
|000013d0| 6f 72 20 28 53 74 61 67 | 65 3d 4c 4f 47 32 4e 64 |or (Stag|e=LOG2Nd|
|000013e0| 69 76 32 3b 53 74 61 67 | 65 3b 53 74 61 67 65 2d |iv2;Stag|e;Stage-|
|000013f0| 2d 29 0a 20 20 7b 0a 20 | 20 20 20 58 41 3d 52 65 |-). {. | XA=Re|
|00001400| 70 6c 61 63 65 58 44 61 | 74 61 3b 0a 20 20 20 20 |placeXDa|ta;. |
|00001410| 58 42 3d 58 41 2b 42 46 | 6c 79 73 3b 0a 20 20 20 |XB=XA+BF|lys;. |
|00001420| 20 58 43 3d 58 42 2b 42 | 46 6c 79 73 3b 0a 20 20 | XC=XB+B|Flys;. |
|00001430| 20 20 58 44 3d 58 43 2b | 42 46 6c 79 73 3b 0a 20 | XD=XC+|BFlys;. |
|00001440| 20 20 20 59 41 3d 52 65 | 70 6c 61 63 65 59 44 61 | YA=Re|placeYDa|
|00001450| 74 61 3b 0a 20 20 20 20 | 59 42 3d 59 41 2b 42 46 |ta;. |YB=YA+BF|
|00001460| 6c 79 73 3b 0a 20 20 20 | 20 59 43 3d 59 42 2b 42 |lys;. | YC=YB+B|
|00001470| 46 6c 79 73 3b 0a 20 20 | 20 20 59 44 3d 59 43 2b |Flys;. | YD=YC+|
|00001480| 42 46 6c 79 73 3b 0a 20 | 20 20 20 66 6f 72 28 47 |BFlys;. | for(G|
|00001490| 72 6f 75 70 3d 47 72 6f | 75 70 73 3b 47 72 6f 75 |roup=Gro|ups;Grou|
|000014a0| 70 3b 47 72 6f 75 70 2d | 2d 29 0a 20 20 20 20 7b |p;Group-|-). {|
|000014b0| 0a 20 20 20 20 20 20 43 | 62 3d 43 63 3d 43 64 3d |. C|b=Cc=Cd=|
|000014c0| 53 69 6e 54 77 69 64 73 | 2b 4e 5f 44 49 56 5f 34 |SinTwids|+N_DIV_4|
|000014d0| 3b 0a 20 20 20 20 20 20 | 53 62 3d 53 63 3d 53 64 |;. |Sb=Sc=Sd|
|000014e0| 3d 53 69 6e 54 77 69 64 | 73 3b 0a 20 20 20 20 20 |=SinTwid|s;. |
|000014f0| 20 66 6f 72 28 42 46 6c | 79 3d 42 46 6c 79 73 3b | for(BFl|y=BFlys;|
|00001500| 42 46 6c 79 3b 42 46 6c | 79 2d 2d 29 0a 20 20 20 |BFly;BFl|y--). |
|00001510| 20 20 20 7b 0a 20 20 20 | 20 20 20 20 20 78 61 3d | {. | xa=|
|00001520| 2a 58 41 3b 20 78 62 3d | 2a 58 42 3b 20 78 63 3d |*XA; xb=|*XB; xc=|
|00001530| 2a 58 43 3b 20 78 64 3d | 2a 58 44 3b 0a 20 20 20 |*XC; xd=|*XD;. |
|00001540| 20 20 20 20 20 79 61 3d | 2a 59 41 3b 20 79 62 3d | ya=|*YA; yb=|
|00001550| 2a 59 42 3b 20 79 63 3d | 2a 59 43 3b 20 79 64 3d |*YB; yc=|*YC; yd=|
|00001560| 2a 59 44 3b 0a 0a 20 20 | 20 20 20 20 20 20 2a 58 |*YD;.. | *X|
|00001570| 41 2b 2b 3d 78 61 2b 78 | 62 2b 78 63 2b 78 64 3b |A++=xa+x|b+xc+xd;|
|00001580| 0a 20 20 20 20 20 20 20 | 20 2a 59 41 2b 2b 3d 79 |. | *YA++=y|
|00001590| 61 2b 79 62 2b 79 63 2b | 79 64 3b 0a 20 20 20 20 |a+yb+yc+|yd;. |
|000015a0| 20 20 20 20 2a 58 42 2b | 2b 3d 28 78 61 2b 79 62 | *XB+|+=(xa+yb|
|000015b0| 2d 78 63 2d 79 64 29 2a | 28 2a 43 62 29 2b 28 79 |-xc-yd)*|(*Cb)+(y|
|000015c0| 61 2d 78 62 2d 79 63 2b | 78 64 29 2a 28 2a 53 62 |a-xb-yc+|xd)*(*Sb|
|000015d0| 29 3b 0a 20 20 20 20 20 | 20 20 20 2a 59 42 2b 2b |);. | *YB++|
|000015e0| 3d 28 79 61 2d 78 62 2d | 79 63 2b 78 64 29 2a 28 |=(ya-xb-|yc+xd)*(|
|000015f0| 2a 43 62 29 2d 28 78 61 | 2b 79 62 2d 78 63 2d 79 |*Cb)-(xa|+yb-xc-y|
|00001600| 64 29 2a 28 2a 53 62 29 | 3b 0a 20 20 20 20 20 20 |d)*(*Sb)|;. |
|00001610| 20 20 2a 58 43 2b 2b 3d | 28 78 61 2d 78 62 2b 78 | *XC++=|(xa-xb+x|
|00001620| 63 2d 78 64 29 2a 28 2a | 43 63 29 2b 28 79 61 2d |c-xd)*(*|Cc)+(ya-|
|00001630| 79 62 2b 79 63 2d 79 64 | 29 2a 28 2a 53 63 29 3b |yb+yc-yd|)*(*Sc);|
|00001640| 0a 20 20 20 20 20 20 20 | 20 2a 59 43 2b 2b 3d 28 |. | *YC++=(|
|00001650| 79 61 2d 79 62 2b 79 63 | 2d 79 64 29 2a 28 2a 43 |ya-yb+yc|-yd)*(*C|
|00001660| 63 29 2d 28 78 61 2d 78 | 62 2b 78 63 2d 78 64 29 |c)-(xa-x|b+xc-xd)|
|00001670| 2a 28 2a 53 63 29 3b 0a | 20 20 20 20 20 20 20 20 |*(*Sc);.| |
|00001680| 2a 58 44 2b 2b 3d 28 78 | 61 2d 79 62 2d 78 63 2b |*XD++=(x|a-yb-xc+|
|00001690| 79 64 29 2a 28 2a 43 64 | 29 2b 28 79 61 2b 78 62 |yd)*(*Cd|)+(ya+xb|
|000016a0| 2d 79 63 2d 78 64 29 2a | 28 2a 53 64 29 3b 0a 20 |-yc-xd)*|(*Sd);. |
|000016b0| 20 20 20 20 20 20 20 2a | 59 44 2b 2b 3d 28 79 61 | *|YD++=(ya|
|000016c0| 2b 78 62 2d 79 63 2d 78 | 64 29 2a 28 2a 43 64 29 |+xb-yc-x|d)*(*Cd)|
|000016d0| 2d 28 78 61 2d 79 62 2d | 78 63 2b 79 64 29 2a 28 |-(xa-yb-|xc+yd)*(|
|000016e0| 2a 53 64 29 3b 0a 0a 20 | 20 20 20 20 20 20 20 43 |*Sd);.. | C|
|000016f0| 62 2b 3d 47 72 6f 75 70 | 73 3b 0a 20 20 20 20 20 |b+=Group|s;. |
|00001700| 20 20 20 43 63 2b 3d 47 | 72 6f 75 70 73 42 79 32 | Cc+=G|roupsBy2|
|00001710| 3b 0a 20 20 20 20 20 20 | 20 20 43 64 2b 3d 47 72 |;. | Cd+=Gr|
|00001720| 6f 75 70 73 42 79 33 3b | 0a 0a 20 20 20 20 20 20 |oupsBy3;|.. |
|00001730| 20 20 53 62 2b 3d 47 72 | 6f 75 70 73 3b 0a 20 20 | Sb+=Gr|oups;. |
|00001740| 20 20 20 20 20 20 53 63 | 2b 3d 47 72 6f 75 70 73 | Sc|+=Groups|
|00001750| 42 79 32 3b 0a 20 20 20 | 20 20 20 20 20 53 64 2b |By2;. | Sd+|
|00001760| 3d 47 72 6f 75 70 73 42 | 79 33 3b 0a 20 20 20 20 |=GroupsB|y3;. |
|00001770| 20 20 7d 20 20 2f 2a 20 | 42 75 74 74 65 72 46 6c | } /* |ButterFl|
|00001780| 79 20 2a 2f 0a 0a 20 20 | 20 20 20 20 58 41 2b 3d |y */.. | XA+=|
|00001790| 42 46 6c 79 73 42 79 33 | 3b 0a 20 20 20 20 20 20 |BFlysBy3|;. |
|000017a0| 58 42 2b 3d 42 46 6c 79 | 73 42 79 33 3b 0a 20 20 |XB+=BFly|sBy3;. |
|000017b0| 20 20 20 20 58 43 2b 3d | 42 46 6c 79 73 42 79 33 | XC+=|BFlysBy3|
|000017c0| 3b 0a 20 20 20 20 20 20 | 58 44 2b 3d 42 46 6c 79 |;. |XD+=BFly|
|000017d0| 73 42 79 33 3b 0a 0a 20 | 20 20 20 20 20 59 41 2b |sBy3;.. | YA+|
|000017e0| 3d 42 46 6c 79 73 42 79 | 33 3b 0a 20 20 20 20 20 |=BFlysBy|3;. |
|000017f0| 20 59 42 2b 3d 42 46 6c | 79 73 42 79 33 3b 0a 20 | YB+=BFl|ysBy3;. |
|00001800| 20 20 20 20 20 59 43 2b | 3d 42 46 6c 79 73 42 79 | YC+|=BFlysBy|
|00001810| 33 3b 0a 20 20 20 20 20 | 20 59 44 2b 3d 42 46 6c |3;. | YD+=BFl|
|00001820| 79 73 42 79 33 3b 0a 0a | 20 20 20 20 7d 20 20 2f |ysBy3;..| } /|
|00001830| 2a 20 47 72 6f 75 70 20 | 2a 2f 0a 0a 20 20 20 20 |* Group |*/.. |
|00001840| 47 72 6f 75 70 73 3c 3c | 3d 32 3b 0a 20 20 20 20 |Groups<<|=2;. |
|00001850| 47 72 6f 75 70 73 42 79 | 32 3c 3c 3d 32 3b 0a 20 |GroupsBy|2<<=2;. |
|00001860| 20 20 20 47 72 6f 75 70 | 73 42 79 33 3c 3c 3d 32 | Group|sBy3<<=2|
|00001870| 3b 0a 20 20 20 20 42 46 | 6c 79 73 3e 3e 3d 32 3b |;. BF|lys>>=2;|
|00001880| 0a 20 20 20 20 42 46 6c | 79 73 42 79 33 3e 3e 3d |. BFl|ysBy3>>=|
|00001890| 32 3b 0a 20 20 7d 20 20 | 2f 2a 20 53 74 61 67 65 |2;. } |/* Stage|
|000018a0| 20 2a 2f 0a 0a 20 20 2f | 2a 20 55 6e 73 63 72 61 | */.. /|* Unscra|
|000018b0| 6d 62 6c 65 20 2a 2f 0a | 20 20 66 6f 72 20 28 69 |mble */.| for (i|
|000018c0| 3d 30 3b 69 3c 4e 3b 69 | 2b 2b 29 20 4f 75 74 70 |=0;i<N;i|++) Outp|
|000018d0| 75 74 5b 69 5d 3d 52 65 | 70 6c 61 63 65 58 44 61 |ut[i]=Re|placeXDa|
|000018e0| 74 61 5b 55 6e 73 63 72 | 61 6d 62 6c 65 64 49 6e |ta[Unscr|ambledIn|
|000018f0| 64 65 78 5b 69 5d 5d 2f | 4e 3b 0a 7d 20 20 20 2f |dex[i]]/|N;.} /|
|00001900| 2a 20 46 46 54 20 2a 2f | 0a 0a 2d 2d 2d 2d 2d 2d |* FFT */|..------|
|00001910| 2d 2d 2d 2d 2d 2d 2d 2d | 35 39 33 46 32 42 41 34 |--------|593F2BA4|
|00001920| 39 38 45 2d 2d 0a 0a | |98E--.. | |
+--------+-------------------------+-------------------------+--------+--------+